Stata 代码太长怎么办?这些换行技巧你需要知道
本文作者:张 迪,中南财经政法大学金融学院
本文编辑:张 猛
技术总编:方一卓
Stata&Python云端课程来啦!
好消息好消息,爬虫俱乐部开辟小鹅通战场!!爬虫俱乐部隆重推出小鹅通网络课程,将Stata基础课程,Stata进阶课程和Python课程都上传至小鹅通平台,欢迎大家多多支持订阅!报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台留言哦。如需了解详情,可以通过课程链接(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或课程二维码进行访问哦~我们使用 Stata 写代码的时候,有时会发现代码太长一行写不下,有时在学习课程的时候发现自己写的代码跟老师一模一样,但是运行却出现了问题,如下面代码所示,这是因为我们可能忽略了代码换行的问题。本篇推文就来帮助大家了解和解决换行的相关问题,帮助大家顺利运行长代码。
copy
"http://vip.stock.finance.sina.com.cn/corp/go.php/vCI_CorpManger/stockid/000001.phtml"
temp.txt,replace
* 注意:此代码是本篇推文的示例,直接运行会报错。
直接在命令窗口复制上述代码,运行会出现:
同样,把上述命令复制到 dofile 文件中,全部选中并运行,会出现下面的结果:
从结果窗口报错的结果我们可以看出,Stata 执行命令时,并没有运行我们选中的三行代码,仅运行完第1行copy命令,就因为copy的格式书写不规范不完善而报错,并未继续运行下面两行的代码。这同样是忽略了换行标识符所导致的问题。 怎么解决换行问题呢?接下来,本篇推文将详细介绍换行方法。
Stata15 及以前的版本无自动换行功能,Stata16 增添了自动换行功能,我们现在所使用较多的Stata17 也具有这个功能。
copy "http://vip.stock.finance.sina.com.cn/corp/go.php/vCI_CorpManager/stockid/000001.phtml" temp.txt,replace
* 此代码直接复制到命令窗口也可运行出结果,本例着重讲dofile文件中的换行问题。
复制上面的命令至 dofile 文件中,因为代码过长,可能会出现如下图所示内:
这个就是自动换行的示例图,第1行和第2行之间出现了两个拐弯的小箭头,并各占了一行,这说明第1行代码包括第1行对应的copy以及第1行和第2行之间两个拐弯的小箭头所指行的http://vip.stock.finance.sina.com.cn/corp/go.php/vCI_CorpManger/stockid/000001.phtml和temp.txt,replace。也就是说,第1行和两个拐弯的小箭头所指行本质是一行,只是因为一行写不下,Stata做了自动换行。
在行尾使用 ///
在行尾加上三条斜杠///
可实现手动换行。 但是要注意: ///
之前至少需要加一个空格。需要同时选中手动换行的代码,再运行。
copy ///
"http://vip.stock.finance.sina.com.cn/corp/go.php/vCI_CorpManager/stockid/000001.phtml" ///
temp.txt,replace
* 此代码直接复制到命令窗口运行也会报错,命令窗口识别不了 /// 的换行作用,而dofile文件内可识别 /// 的换行作用。
我们发现,自己输入///
手动换行的结果不同于上述自动换行,这是因为copy、http://vip.stock.finance.sina.com.cn/corp/go.php/vCI_CorpManger/stockid/000001.phtml和temp.txt,replace分别属于第1行、第2行和第3行,并没有自动换行中“拐弯的小箭头”。
///
为其中一个工具。 ///
的方式使用也较为便捷,使用者也较多。 第一行行尾使用/*,第二行行首使用*/
需要同时选中手动换行的代码,再运行。
copy/*
*/"http://vip.stock.finance.sina.com.cn/corp/go.php/vCI_CorpManager/stockid/000001.phtml"/*
*/temp.txt,replace
* 此代码直接复制到命令窗口运行也会报错,命令窗口识别不了此类换行符的换行作用,而dofile文件内可识别。
复制上面的命令至 dofile 文件中,因为代码过长,可能会出现如下图所示内容:/*
,在第2行行首加上*/
。那么还剩第3行要怎么处理呢?此时可把第2行、第3行当做一组,在第2行行尾加上/*
,在第3行行首加上*/
,如此便完成了手动换行。 因为手动换行将命令分离成多行,需要选中全部代码行才能运行出结果。如在上图示例中,需要选中第1行、第2行和第3行,再运行才能得出结果。 该方式使用需要对每一行都有所处理,用起来较麻烦,使用相对较少。03
使用#delimit; 以及 #delimit cr 组合
#delimit;
,末行为#delimit cr
,首行与末行之间为需要手动换行的内容,手动换行的内容结束后需要加上分号;
。 需要同时选中手动换行的代码,再运行。
格式如下:
#delimit;
command;
#delimit cr
//#delimit 可以简写为 #d
#d ;
command;
#d cr
#delimit;
copy
"http://vip.stock.finance.sina.com.cn/corp/go.php/vCI_CorpManager/stockid/000001.phtml"
temp.txt,replace;
#delimit cr
* 此代码直接复制到命令窗口运行也会报错,命令窗口识别不了此类换行符的换行作用,而dofile文件内可识别。
复制上面的命令至 dofile 文件中,因为代码过长,可能会出现如下图所示内容:
我们发现该方法的换行的结果也不同于上述自动换行,这是也是因为copy、http://vip.stock.finance.sina.com.cn/corp/go.php/vCI_CorpManger/stockid/000001.phtml和temp.txt,replace分别属于第1行、第2行和第3行,并没有自动换行中“拐弯的小箭头”。
#delimit;
,末行第5行为#delimit cr
,手动换行结束的第4行尾有;
。 sysuse "auto", clear
#delimit ;
twoway (scatter price wei)
(lfit price wei),
title("散点图和线性拟合图");
#delimit cr
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
爬虫俱乐部的精彩答疑--花式重命名变量
今天你还是“刘畊宏女孩”吗?爬虫俱乐部在山东财经大学金融学院暑期Stata网课上的精彩答疑
Stata绘图系列——玩转绘图通用选项(一)
出人意料!这所大学的A级学科总数竟超越清华北大!
Stata数据读入——打开方式不同?
数据类型——Dict、Set与Frozenset简析
Stata小贴士之外部命令安装路径
有一种夏天叫做宫崎骏的夏天
换装术|多个Excel文件如何一键转为dta格式
【基础篇】Python可变对象与不可变对象
Stata绘图系列——细节掌控绘图区域!
4月A股的收官战之概念板块哪家强?解放双手!你必须要会的两个命令—inlist & inlist2
【基础篇】字符串之判断方法
Stata绘图系列——让你的直方图随心所欲
【爬虫篇】湖人无缘季后赛,球迷如何回应
客官,要来份四象限图吗?
Python实现简繁体转换
关于我们
微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。